/**
 * 
 */
package com.cloudbroker.bcs.platform.ltb.common.payUtil;

import org.apache.log4j.Logger;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * @author jiangchuan@hundsun.com
 *
 *         <pre>
 *         说明： 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究三峡付接口使用，只是提供一个
 */
public class SHA256Util {
	private static Logger loggger = Logger.getLogger(SHA256Util.class);

	/**
	 * 对消息做SHA-256摘要
	 * @param source 摘要原文
	 * @return
	 */
	public static String getSHA256(String source) {
		byte[] pwd = null;
		MessageDigest md = null;
		try {
			md = MessageDigest.getInstance("SHA-256");
		} catch (NoSuchAlgorithmException e) {
			loggger.error(e);
		}
		try {
			md.update(source.getBytes("UTF-8"));
		} catch (UnsupportedEncodingException e) {
			loggger.error(e);
		}
		byte[] digest = md.digest();
		pwd = new byte[digest.length];
		System.arraycopy(digest, 0, pwd, 0, digest.length);
		return byteToHexString(pwd);
	}

	/**
	 * 二进制转十六进制
	 * @param b
	 * @return
	 */
	private static String byteToHexString(byte[] b) {
		StringBuffer hexString = new StringBuffer();
		for (int i = 0; i < b.length; i++) {
			String hex = Integer.toHexString(b[i] & 0xFF);
			if (hex.length() == 1) {
				hex = '0' + hex;
			}
			hexString.append(hex.toUpperCase());
		}
		return hexString.toString();
	}
}
